The present invention relates generally to electronic components containing multiple microcontrollers, and more particularly, to multi-processor command management in those electronic components.
An example of an electronic component with multiple microcontrollers is a field-replaceable unit (FRU), which is a programmable component that can be easily removed from and replaced in a server or other computing device. It is often considered beneficial that a power/thermal FRU use one or more small, inexpensive microcontrollers. When using multiple small microcontrollers in an FRU, the savings on a per-unit basis is substantial as compared with a single complex microcontroller, lowering the overall hardware cost of the FRU.
However, generally a small microcontroller is unable to handle the tasks of the FRU on its own, and thus, multiple small microcontrollers may be used in a single FRU. In that case, the multiple microcontroller used include a front-end microcontroller, referred to herein as a host processor, and one or more back-end microcontrollers, referred to herein as back-end processors (BEPs). General existing strategy is to isolate the BEPs from direct contact with external code that communicates directly with the host processor. Thus, the host processor acts a central component of a robust communication design. The host processor behaves as an interface for commands that are to be performed by the FRU. Each BEP may be responsible for assigned tasks. The host processor communicates with the BEPs, monitoring their status, sending commands, and sending and receiving other communications.
An increase in the use of BEPs has led to various back-end communication issues. One inherent problem is coordinating the various processes needing to communicate with the BEPs. The competing processes fall into two categories: periodic and non-periodic. Periodic processes are those that occur repeatedly and expectedly, and include scheduled processes through which the host processor performs cyclic monitoring of the BEPs. Non-periodic processes are those that are not scheduled; rather, they can occur at any time. These include external commands received through the external code, as well as other non-periodic commands originating in the FRU's firmware.
The host processor manages both the periodic and the non-periodic processes, communicating corresponding commands to the BEPs and receiving responses in return. Non-periodic processes are generally given higher priority than periodic processes. Thus, using existing prioritization schemes, if numerous non-periodic processes are received, or if non-periodic processes are received frequently, the periodic processes may become starved out. In other words, the host processor may become saturated with handling the high-priority, non-periodic processes, such that it ignores the periodic ones, which are also essential to the overall operation of the FRU.